package Test06;

import java.io.*;

//IO流练习拷贝文件
/*
    四种方式拷贝文件，并统计各自用时
        字节流的基本流:一次读写一个字节
        字节流的基本流:一次读写一个字节数组
        字节缓冲流:一次读写一个字节
        字节缓冲流:一次读写一个字节数组
 */
public class Test23 {
    public static void main(String[] args) throws IOException {

        long start = System.currentTimeMillis();
        System.out.println("开始");
        method1();
        //method2();//0.15秒
        //method3();//0.633秒
        //method4();//0.133秒

        System.out.println("结束");
        long end = System.currentTimeMillis();
        System.out.println((end - start) / 1000.0 + "秒");

    }

    //字节流的基本流:一次读写一个字节
    public static void method1() throws IOException {
        FileInputStream fis = new FileInputStream("D:\\工作\\JDK_API_1.6.0_CN\\JDK_API_1_6_zh_CN.CHM");
        FileOutputStream fos = new FileOutputStream("D:\\工作\\src\\JDK_API_1_6_zh_CN.CHM");

        int b;
        while ((b = fis.read()) != -1) {
            fos.write(b);
        }

        fos.close();
        fis.close();
    }

    //字节流的基本流:一次读写一个字节数组
    public static void method2() throws IOException {
        FileInputStream fis = new FileInputStream("D:\\工作\\JDK_API_1.6.0_CN\\JDK_API_1_6_zh_CN.CHM");
        FileOutputStream fos = new FileOutputStream("D:\\工作\\src\\JDK_API_1_6_zh_CN.CHM");

        byte[] bytes = new byte[8192];
        int b;
        while ((b = fis.read(bytes)) != -1) {
            fos.write(bytes);
        }

        fos.close();
        fis.close();
    }

    //字节缓冲流:一次读写一个字节
    public static void method3() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\工作\\JDK_API_1.6.0_CN\\JDK_API_1_6_zh_CN.CHM"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\工作\\src\\JDK_API_1_6_zh_CN.CHM"));

        int b;
        while ((b = bis.read()) != -1) {
            bos.write(b);
        }

        bos.close();
        bis.close();
    }

    //字节缓冲流:一次读写一个字节数组
    public static void method4() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\工作\\JDK_API_1.6.0_CN\\JDK_API_1_6_zh_CN.CHM"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\工作\\src\\JDK_API_1_6_zh_CN.CHM"));

        byte[] bytes = new byte[8192];
        int b;
        while ((b = bis.read(bytes)) != -1) {
            bos.write(bytes);
        }

        bos.close();
        bis.close();
    }
}
